﻿using System;

namespace SiteUnity.Frame.Common.Tools
{
    public class Formatter
    {
        static public string Url(string url)
        {
            return url.Contains("http") ? url : "http://" + url;
        }
        static public string calculateDateDifference(DateTime dt)
        {
            var ts = new TimeSpan(DateTime.Now.Ticks - dt.Ticks);
            double delta = ts.TotalSeconds;

            const int SECOND = 1;
            const int MINUTE = 60 * SECOND;
            const int HOUR = 60 * MINUTE;
            const int DAY = 24 * HOUR;
            const int MONTH = 30 * DAY;

            if (delta < 0)
            {
                return "not yet";
            }
            if (delta < 1 * MINUTE)
            {
                return ts.Seconds == 1 ? "one second ago" : ts.Seconds + " seconds ago";
            }
            if (delta < 2 * MINUTE)
            {
                return "a minute ago";
            }
            if (delta < 45 * MINUTE)
            {
                return ts.Minutes + " minutes ago";
            }
            if (delta < 90 * MINUTE)
            {
                return "an hour ago";
            }
            if (delta < 24 * HOUR)
            {
                return ts.Hours + " hours ago";
            }
            if (delta < 48 * HOUR)
            {
                return "yesterday";
            }
            if (delta < 30 * DAY)
            {
                return ts.Days + " days ago";
            }
            if (delta < 12 * MONTH)
            {
                int months = Convert.ToInt32(Math.Floor((double)ts.Days / 30));
                return months <= 1 ? "one month ago" : months + " months ago";
            }
            else
            {
                int years = Convert.ToInt32(Math.Floor((double)ts.Days / 365));
                return years <= 1 ? "one year ago" : years + " years ago";
            }
        }
        static public string getName(string fullName, char delimiter)
        {
            return fullName.Split(delimiter)[0];
        }
        static public string getSurname(string fullName, char delimiter)
        {
            string surname = string.Empty;
            string[] parts = fullName.Split(delimiter);

            if (parts.Length > 1)
                for (int i = 1; i < parts.Length; i++)
                    surname += parts[i] + delimiter;

            return surname.TrimEnd(delimiter);
        }
        static public string Date(DateTime dt)
        {
            return Date(dt, "MMM dd, yyyy");
        }
        static public string Date(DateTime dt, string format)
        {
            return dt.ToString(format);
        }
    }
}
